home *** CD-ROM | disk | FTP | other *** search
/ Bikini Open 1 / Bikini Open - Volume 1.iso / pc / utils / setup / corelcd.mst < prev    next >
Text File  |  1994-03-18  |  14KB  |  541 lines

  1. '**************************************************************************
  2. '*                       MSSetup Toolkit - CROFT Setup                    *
  3. '**************************************************************************
  4.  
  5. '$DEFINE DEBUG  ''Define for script development/debugging
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8. '$INCLUDE 'msdetect.inc'
  9.  
  10. CONST WS_VISIBLE=&H10000000
  11. CONST WS_BORDER =&H00800000
  12. CONST WS_CLIPCHILDREN =&H02000000
  13. CONST GWL_STYLE =-16
  14. CONST SW_SHOWMAXIMIZED=3
  15.  
  16. DECLARE FUNCTION ShowWindow LIB "user.exe" (hWnd%,iShow%) AS INTEGER
  17. DECLARE FUNCTION SetWindowLong LIB "user.exe" (hWnd%,offset%,style&) AS LONG
  18.  
  19. hWnd%=HwndFrame()
  20.  
  21. sti&=SetWindowLong(hWnd%,GWL_STYLE,WS_VISIBLE+WS_BORDER+WS_CLIPCHILDREN)
  22. stj%=ShowWindow(hWnd%,SW_SHOWMAXIMIZED)
  23.  
  24. ''Dialog ID's
  25. CONST WELCOME      = 100
  26. CONST ASKQUIT      = 200
  27. CONST DESTPATH     = 300
  28. CONST EXITFAILURE  = 400
  29. CONST EXITQUIT     = 600
  30. CONST EXITSUCCESS  = 700
  31. CONST APPHELP      = 900
  32. CONST CUSTINST     = 6200
  33. CONST TOOBIG       = 6300
  34. CONST BADPATH      = 6400
  35. CONST MOSAIC       = 7100
  36. CONST PCDSCSI      = 7200
  37. CONST CDAUDIO      = 7300
  38.  
  39. ''Bitmap ID
  40. CONST LOGO         = 1
  41.  
  42. ''File Types
  43. CONST PCDLABFILES    = 1
  44. CONST PCDSCRFILES    = 2
  45.  
  46. FLAG1$          ="No"      '' Copy flags for
  47. FLAG2$          ="No"      '' DLL files that go
  48. FLAG3$          ="No"      '' into WindowsDir and WindowsSysDir
  49.  
  50.  
  51. GLOBAL DEST$        ''Default destination directory.
  52. GLOBAL WINDRIVE$    ''Windows drive letter.
  53. GLOBAL OPT1OPT$     ''Option selection from OptFiles1 option dialog.
  54. GLOBAL OPT2OPT$     ''Option selection from OptFiles2 option dialog.
  55.  
  56. ''CustInst list symbol names
  57. GLOBAL PCDLABNEEDS$    ''Option list costs per drive
  58. GLOBAL PCDSCRNEEDS$
  59.  
  60. GLOBAL EXTRACOSTS$  ''List of extra costs to add per drive
  61. GLOBAL BIGLIST$     ''List of option files cost calc results (boolean)
  62.  
  63. ''Dialog list symbol names
  64. GLOBAL CHECKSTATES$
  65. GLOBAL STATUSTEXT$
  66. GLOBAL DRIVETEXT$
  67.  
  68.  
  69. DECLARE SUB AddOptFilesToCopyList (ftype%)
  70. DECLARE SUB RecalcOptFiles (ftype%)
  71. DECLARE SUB RecalcPath
  72. DECLARE SUB SetDriveStatus
  73. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  74.  
  75.  
  76.  
  77. INIT:
  78.     CUIDLL$ = "mscuistf.dll"            ''custom user interface dll
  79.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  80.  
  81.     SetBitmap CUIDLL$, LOGO
  82.     SetTitle "CROFT Setup"
  83.  
  84.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  85.     IF szInf$ = "" THEN
  86.     szInf$ = GetSymbolValue("STF_CWDDIR") + "CORELCD.INF"
  87.     END IF
  88.     ReadInfFile szInf$
  89.  
  90.     WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
  91.     WINDIR$ = GetWindowsDir()
  92.     DEST$ = WINDRIVE$ + ":\CROFTCD"
  93.  
  94.     ''CustInst list symbols
  95.     CHECKSTATES$ = "CheckItemsState"
  96.     STATUSTEXT$  = "StatusItemsText"
  97.     DRIVETEXT$   = "DriveStatusText"
  98.     FOR i% = 1 TO 8 STEP 1
  99.     AddListItem CHECKSTATES$, "ON"
  100.     NEXT i%
  101.     FOR i% = 1 TO 8 STEP 1
  102.     AddListItem STATUSTEXT$, ""
  103.     NEXT i%
  104.     FOR i% = 1 TO 7 STEP 1
  105.     AddListItem DRIVETEXT$, ""
  106.     NEXT i%
  107.     ReplaceListItem DRIVETEXT$, 7, DEST$
  108.  
  109.     ''Disk cost list symbols
  110.     PCDLABNEEDS$  = "PcdLabNeeds"
  111.     PCDSCRNEEDS$  = "PcdScrNeeds"
  112.     EXTRACOSTS$ = "ExtraCosts"
  113.     BIGLIST$    = "BigList"
  114.     FOR i% = 1 TO 5 STEP 1
  115.     AddListItem BIGLIST$, ""
  116.     NEXT i%
  117.     FOR i% = 1 TO 26 STEP 1
  118.     AddListItem EXTRACOSTS$, "0"
  119.     NEXT i%
  120.  
  121.     ''File Option Variables
  122.     OPT1OPT$ = "1"
  123.     OPT2OPT$ = "1"
  124.  
  125.     RecalcPath
  126.     SetDriveStatus
  127.  
  128. '$IFDEF DEBUG
  129.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  130. '$ENDIF ''DEBUG
  131.  
  132.  
  133. WELCOME:
  134.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  135.     IF sz$ = "CONTINUE" THEN
  136.     UIPop 1
  137.     ELSE
  138.     GOSUB ASKQUIT
  139.     GOTO WELCOME
  140.     END IF
  141.  
  142.  
  143. CUSTINST:
  144.     sz$ = UIStartDlg(CUIDLL$, CUSTINST, "FCustInstDlgProc", APPHELP, HELPPROC$)
  145.  
  146.     IF sz$ = "CONTINUE" THEN
  147.     ''Install only if it will fit.
  148.     FOR i% = 1 TO 5 STEP 1
  149.         IF GetListItem(BIGLIST$, i%) <> "" THEN
  150.         GOSUB TOOBIG
  151.         GOTO CUSTINST
  152.         END IF
  153.     NEXT i%
  154.     UIPop 1
  155.     GOTO INSTALL
  156.     ELSEIF sz$ = "PATH" THEN
  157.     GOTO GETPATH
  158.     ELSEIF sz$ = "CHK1" THEN
  159.     RecalcOptFiles PCDLABFILES
  160.     SetDriveStatus
  161.     GOTO CUSTINST
  162.     ELSEIF sz$ = "CHK2" THEN
  163.     RecalcOptFiles PCDSCRFILES
  164.     SetDriveStatus
  165.     GOTO CUSTINST
  166.     ELSEIF sz$ = "BTN2" THEN
  167.     GOTO PCDSCRFILES
  168.     ELSEIF sz$ = "REACTIVATE" THEN
  169.     RecalcPath
  170.     SetDriveStatus
  171.     GOTO CUSTINST
  172.     ELSE
  173.     GOSUB ASKQUIT
  174.     GOTO CUSTINST
  175.     END IF
  176.  
  177.  
  178.  
  179. INSTALL:
  180.     ClearCopyList
  181.     AddOptFilesToCopyList PCDLABFILES
  182.     AddOptFilesToCopyList PCDSCRFILES
  183.     CreateDir DEST$, cmoNone
  184.     
  185.     IF GetListItem(CHECKSTATES$, PCDLABFILES) = "ON" THEN
  186.      IF DoesIniKeyExist("WIN.INI", "PhotoCD Lab", "Dir") = 1 THEN
  187.          PcdDir$ = GetIniKeyString("WIN.INI", "PhotoCD Lab", "Dir")
  188.          IF DoesFileExist(PcdDir$ + "\PCDSCSI.EXE", femReadWrite) = 1 THEN
  189.          SetSymbolValue "ConfirmTextIn", PcdDir$
  190.          SetSymbolValue "EditFocus", "END"
  191.          sz$ = UIStartDlg(CUIDLL$, PCDSCSI, "FConfirmDlgProc", APPHELP, HELPPROC$)
  192.          IF sz$ = "BACK" THEN
  193.              UIPop 1
  194.              GOTO CUSTINST
  195.          ELSEIF sz$ = "CONTINUE" THEN
  196.              UIPop 1
  197.          END IF
  198.          END IF
  199.      END IF
  200.      IF PcdDir$ <> "" THEN
  201.          CreateIniKeyValue "WIN.INI", "PhotoCD Lab", "Dir", PcdDir$, cmoOverwrite
  202.      ELSE
  203.          CreateIniKeyValue "WIN.INI", "PhotoCD Lab", "Dir", DEST$ + "\PCDLAB", cmoOverwrite
  204.      END IF
  205.     END IF
  206.  
  207.     CopyFilesInCopyList
  208.  
  209.     InstDrive$=MID$(DEST$,1,2)
  210.     IF GetListItem(CHECKSTATES$, PCDLABFILES) = "ON" THEN
  211.     CreateProgmanGroup "CROFT CD-ROM", "", cmoNone
  212.     ShowProgmanGroup  "CROFT CD-ROM", 1, cmoNone
  213.     CreateProgmanItem "CROFT CD-ROM", "PhotoCD Lab", MakePath(DEST$, "pcdlab\pcdscsi.exe "), "", cmoOverwrite
  214.     END IF
  215.  
  216. QUIT:
  217.     ON ERROR GOTO ERRQUIT
  218.  
  219.     IF ERR = 0 THEN
  220.     dlg% = EXITSUCCESS
  221.     ELSEIF ERR = STFQUIT THEN
  222.     dlg% = EXITQUIT
  223.     ELSE
  224.     dlg% = EXITFAILURE
  225.     END IF
  226. QUITL1:
  227.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  228.     IF sz$ = "REACTIVATE" THEN
  229.     GOTO QUITL1
  230.     END IF
  231.     UIPop 1
  232.  
  233.     END
  234.  
  235. ERRQUIT:
  236.     i% = DoMsgBox("Setup sources were corrupted, call Tech Support", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  237.     END
  238.  
  239.  
  240.  
  241. GETPATH:
  242.     SetSymbolValue "EditTextIn", DEST$
  243.     SetSymbolValue "EditFocus", "END"
  244. GETPATHL1:
  245.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  246.  
  247.     IF sz$ = "CONTINUE" THEN
  248.     olddest$ = DEST$
  249.     DEST$ = GetSymbolValue("EditTextOut")
  250.  
  251.     ''Validate new path.
  252.     IF IsDirWritable(DEST$) = 0 THEN
  253.         GOSUB BADPATH
  254.         GOTO GETPATHL1
  255.     END IF
  256.     UIPop 1
  257.  
  258.     ''Truncate display if too long.
  259.     IF LEN(DEST$) > 23 THEN
  260.         ReplaceListItem DRIVETEXT$, 7, MID$(DEST$, 1, 23)+"..."
  261.     ELSE
  262.         ReplaceListItem DRIVETEXT$, 7, DEST$
  263.     END IF
  264.  
  265.     ''Recalc if path changed.
  266.     IF (olddest$ <> DEST$) AND (olddest$ <> DEST$+"\") AND (olddest$+"\" <> DEST$) THEN
  267.         RecalcPath
  268.         SetDriveStatus
  269.     END IF
  270.  
  271.     olddest$ = ""
  272.     GOTO CUSTINST
  273.     ELSEIF sz$ = "REACTIVATE" THEN
  274.     RecalcPath
  275.     SetDriveStatus
  276.     GOTO GETPATHL1
  277.     ELSEIF sz$ = "EXIT" THEN
  278.     GOSUB ASKQUIT
  279.     GOTO GETPATHL1
  280.     ELSE
  281.     UIPop 1
  282.     GOTO CUSTINST
  283.     END IF
  284.  
  285. PCDSCRFILES:
  286.     SetSymbolValue "RadioDefault", OPT2OPT$
  287. OPT2L1:
  288.     sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", APPHELP, HELPPROC$)
  289.     newopt$ = GetSymbolValue("ButtonChecked")
  290.  
  291.     IF sz$ = "CONTINUE" THEN
  292.     UIPop 1
  293.     IF newopt$ <> OPT1OPT$ THEN
  294.         OPT2OPT$ = newopt$
  295.         RecalcOptFiles PCDSCRFILES
  296.         SetDriveStatus
  297.     END IF
  298.     newopt$ = ""
  299.     GOTO CUSTINST
  300.     ELSEIF sz$ = "REACTIVATE" THEN
  301.     RecalcPath
  302.     SetDriveStatus
  303.     GOTO OPT2L1
  304.     ELSEIF sz$ = "EXIT" THEN
  305.     GOSUB ASKQUIT
  306.     GOTO OPT2L1
  307.     ELSE
  308.     UIPop 1
  309.     newopt$ = ""
  310.     GOTO CUSTINST
  311.     END IF
  312.  
  313.  
  314. TOOBIG:
  315.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  316.     IF sz$ = "REACTIVATE" THEN
  317.     RecalcPath
  318.     SetDriveStatus
  319.     GOTO TOOBIG
  320.     END IF
  321.     UIPop 1
  322.     RETURN
  323.  
  324.  
  325.  
  326. BADPATH:
  327.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  328.     IF sz$ = "REACTIVATE" THEN
  329.     RecalcPath
  330.     SetDriveStatus
  331.     GOTO BADPATH
  332.     END IF
  333.     UIPop 1
  334.     RETURN
  335.  
  336.  
  337.  
  338. ASKQUIT:
  339.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  340.  
  341.     IF sz$ = "EXIT" THEN
  342.     UIPopAll
  343.     ERROR STFQUIT
  344.     ELSEIF sz$ = "REACTIVATE" THEN
  345.     GOTO ASKQUIT
  346.     ELSE
  347.     UIPop 1
  348.     END IF
  349.     RETURN
  350.  
  351.  
  352.  
  353. '**
  354. '** Purpose:
  355. '**     Adds the specified option files to the copy list.
  356. '** Arguments:
  357. '**     ftype%  - type of files to add, one of the following:
  358. '**             PCDLABFILES, PCDSCRFILES
  359. '** Returns:
  360. '**     none.
  361. '*************************************************************************
  362. SUB AddOptFilesToCopyList (ftype%) STATIC
  363.  
  364.     IF GetListItem(CHECKSTATES$, ftype%) = "ON" THEN
  365.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  366.     WinDirLen = LEN(GetWindowsDir)-1
  367.     WinDir$ = MID$(GetWindowsDir,1,WinDirLen)
  368.     InstDrive$ = MID$(DEST$,1,2)
  369.     IF ftype% = PCDLABFILES THEN
  370.         AddSectionFilesToCopyList "PcdLabFiles", SrcDir$, DEST$ + "\PCDLAB"
  371.         FLAG1$="Yes"
  372.         FLAG2$="Yes"
  373.         FLAG3$="Yes"
  374.     ELSEIF ftype% = PCDSCRFILES THEN
  375.         AddSectionFilesToCopyList "PcdScrFiles", SrcDir$, GetWindowsDir
  376.         FLAG3$="Yes"
  377.     ENDIF
  378.     IF FLAG1$="Yes" THEN
  379.         CreateIniKeyValue "WIN.INI", "Extensions", "PCD", DEST$ + "\PCDLAB\PCDSCSI.EXE ^.PCD", cmoNone
  380.         AddSectionFilesToCopyList "PcdDllFiles", SrcDir$, GetWindowsSysDir
  381.         IF DoesFileExist(GetWindowsDir + "PCDLIB.DLL", femReadWrite) =1 THEN
  382.         RemoveFile GetWindowsDir + "PCDLIB.DLL", cmoNone
  383.         END IF
  384.         IF DoesFileExist(GetWindowsDir + "PCDXTIF.DLL", femReadWrite) =1 THEN
  385.         RemoveFile GetWindowsDir + "PCDXTIF.DLL", cmoNone
  386.         END IF
  387.         IF DoesFileExist(GetWindowsDir + "PCDXEPS.DLL", femReadWrite) =1 THEN
  388.         RemoveFile GetWindowsDir + "PCDXEPS.DLL", cmoNone
  389.         END IF
  390.         IF DoesFileExist(GetWindowsDir + "PCDXPCX.DLL", femReadWrite) =1 THEN
  391.         RemoveFile GetWindowsDir + "PCDXPCX.DLL", cmoNone
  392.         END IF
  393.         IF DoesFileExist(GetWindowsDir + "PCDXBMP.DLL", femReadWrite) =1 THEN
  394.         RemoveFile GetWindowsDir + "PCDXBMP.DLL", cmoNone
  395.         END IF
  396.     END IF
  397.     IF FLAG2$="Yes" THEN
  398.         AddSectionFilesToCopyList "PcdCtlFile", SrcDir$, GetWindowsSysDir
  399.     END IF
  400.     IF FLAG3$="Yes" THEN
  401.         AddSectionFilesToCopyList "PcdDllFile", SrcDir$, GetWindowsSysDir
  402.     END IF
  403.     FLAG1$="No"
  404.     FLAG2$="No"
  405.     FLAG3$="No"
  406.     SrcDir$ = ""
  407.     END IF
  408. END SUB
  409.  
  410. '**
  411. '** Purpose:
  412. '**     Recalculates disk space for the given option files and sets
  413. '**     the status info symbol "StatusItemsText".
  414. '** Arguments:
  415. '**     ftype% - type of files to add, one of the following:
  416. '**             PCDLABFILES, PCDSCRFILES
  417. '** Returns:
  418. '**     none.
  419. '*************************************************************************
  420. SUB RecalcOptFiles (ftype%) STATIC
  421.     CursorSave% = ShowWaitCursor()
  422.     ClearCopyList
  423.     AddOptFilesToCopyList ftype%
  424.  
  425.     fExtra% = 0
  426.     IF ftype% = PCDLABFILES THEN
  427.     ListSym$ = PCDLABNEEDS$
  428.        IF GetListItem(CHECKSTATES$, PCDLABFILES) = "ON" THEN
  429.        ''Add extra cost to Windows drive for ini/progman, etc.
  430.        ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  431.        ReplaceListItem EXTRACOSTS$, ndrive%, "0"
  432.        fExtra% = 1
  433.        END IF
  434.     ELSEIF ftype% = PCDSCRFILES THEN
  435.     ListSym$ = PCDSCRNEEDS$
  436.     END IF
  437.  
  438.     StillNeed& = GetCopyListCost(EXTRACOSTS$, ListSym$, "")
  439.  
  440.     cost& = 0
  441.     FOR i% = 1 TO 26 STEP 1
  442.     cost&  = cost& + VAL(GetListItem(ListSym$, i%))
  443.     NEXT i%
  444.     ReplaceListItem STATUSTEXT$, ftype%, STR$(cost& / 1024) + " K"
  445.  
  446.     IF StillNeed& > 0 THEN
  447.     ReplaceListItem BIGLIST$, ftype%, "YES"
  448.     ELSE
  449.     ReplaceListItem BIGLIST$, ftype%, ""
  450.     END IF
  451.  
  452. '    IF fExtra% THEN
  453. '        ReplaceListItem EXTRACOSTS$, ndrive%, "10240"
  454. '    END IF
  455.     RestoreCursor CursorSave%
  456.     ListSym$ = ""
  457. END SUB
  458.  
  459.  
  460. '**
  461. '** Purpose:
  462. '**     Recalculates disk space and sets option status info according
  463. '**     to the current destination path.
  464. '** Arguments:
  465. '**     none.
  466. '** Returns:
  467. '**     none.
  468. '*************************************************************************
  469. SUB RecalcPath STATIC
  470.  
  471.     CursorSave% = ShowWaitCursor()
  472.  
  473.     RecalcOptFiles PCDLABFILES
  474.     RecalcOptFiles PCDSCRFILES
  475.  
  476.     RestoreCursor CursorSave%
  477. END SUB
  478.  
  479.  
  480. '**
  481. '** Purpose:
  482. '**     Sets drive status info according to latest disk space calcs.
  483. '** Arguments:
  484. '**     none.
  485. '** Returns:
  486. '**     none.
  487. '*************************************************************************
  488. SUB SetDriveStatus STATIC
  489.  
  490.     drive$ = MID$(DEST$, 1, 1)
  491.     ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
  492.     cost& = VAL(GetListItem(PCDLABNEEDS$, ndrive%)) + VAL(GetListItem(PCDSCRNEEDS$, ndrive%))
  493.     free& = GetFreeSpaceForDrive(drive$)
  494.     ReplaceListItem DRIVETEXT$, 1, drive$ + ":"
  495.     ReplaceListItem DRIVETEXT$, 2, STR$(cost& / 1024) + " K"
  496.     ReplaceListItem DRIVETEXT$, 3, STR$(free& / 1024) + " K"
  497.  
  498.     IF drive$ = WINDRIVE$ THEN
  499.     ReplaceListItem DRIVETEXT$, 4, ""
  500.     ReplaceListItem DRIVETEXT$, 5, ""
  501.     ReplaceListItem DRIVETEXT$, 6, ""
  502.     ELSE
  503.     ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  504.     cost& = VAL(GetListItem(PCDLABNEEDS$, ndrive%)) + VAL(GetListItem(PCDSCRNEEDS$, ndrive%))
  505.     IF cost& = 0 THEN
  506.         ReplaceListItem DRIVETEXT$, 4, ""
  507.         ReplaceListItem DRIVETEXT$, 5, ""
  508.         ReplaceListItem DRIVETEXT$, 6, ""
  509.     ELSE
  510.         free& = GetFreeSpaceForDrive(WINDRIVE$)
  511.         ReplaceListItem DRIVETEXT$, 4, WINDRIVE$ + ":"
  512.         ReplaceListItem DRIVETEXT$, 5, STR$(cost& / 1024) + " K"
  513.         ReplaceListItem DRIVETEXT$, 6, STR$(free& / 1024) + " K"
  514.     END IF
  515.     END IF
  516. END SUB
  517.  
  518.  
  519. '**
  520. '** Purpose:
  521. '**     Appends a file name to the end of a directory path,
  522. '**     inserting a backslash character as needed.
  523. '** Arguments:
  524. '**     szDir$  - full directory path (with optional ending "\")
  525. '**     szFile$ - filename to append to directory
  526. '** Returns:
  527. '**     Resulting fully qualified path name.
  528. '*************************************************************************
  529. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  530.     IF szDir$ = "" THEN
  531.     MakePath = szFile$
  532.     ELSEIF szFile$ = "" THEN
  533.     MakePath = szDir$
  534.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  535.     MakePath = szDir$ + szFile$
  536.     ELSE
  537.     MakePath = szDir$ + "\" + szFile$
  538.     END IF
  539. END FUNCTION
  540.  
  541.